import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';

import 'main.dart'; // 导入 Todo 数据模型

// 用于管理待办事项的 Provider
class TodoProvider with ChangeNotifier {
  List<Todo> _todos = [];
  List<Todo> get todos => _todos;

  // 构造函数，自动加载本地数据
  TodoProvider() {
    loadTodos();
  }

  // 加载本地数据
  Future<void> loadTodos() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    List<String>? todoList = prefs.getStringList('todos');
    if (todoList != null) {
      _todos = todoList.map((item) => Todo.fromMap(jsonDecode(item))).toList();
      notifyListeners(); // 通知界面刷新
    }
  }

  // 保存到本地
  Future<void> saveTodos() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    List<String> todoList = _todos
        .map((todo) => jsonEncode(todo.toMap()))
        .toList();
    await prefs.setStringList('todos', todoList);
  }

  // 添加待办事项
  void addTodo(String text) {
    _todos.add(Todo(id: DateTime.now().millisecondsSinceEpoch, content: text));
    saveTodos();
    notifyListeners();
  }

  // 切换完成状态
  void toggleTodo(int id) {
    for (var todo in _todos) {
      if (todo.id == id) {
        todo.isDone = !todo.isDone;
        break;
      }
    }
    saveTodos();
    notifyListeners();
  }

  // 删除待办事项
  void deleteTodo(int id) {
    _todos.removeWhere((todo) => todo.id == id);
    saveTodos();
    notifyListeners();
  }
}
